package com.decade;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScans;

/**
 * 在springboot工程中只能有一个类是启动类，这个类需要：
 * （1）使用@SpringbootApplication注解进行描述
 * （2）此类中会有一个main方法，在main方法中初始化springboot默认配置
 * FAQ？请问此类启动时会做做什么？
 * （1）通过线程（thread）调用IO从磁盘查找对象的类并将其读到内存（类加载）--class loading
 * (2)对读取内存中类进行分析。哪些是交给spring管理的，由spring管理的这些类哪些是配置类
 * （3）对spring管理的类底层要进行解析，将这些类的信息封装到指定对象（Map<String,BeanDefinition>）
 * (4)spring框架可以基于Bean的配置，构建工厂对象，借助Map存储对象（实例-bean对象），管理对象
 * （5）我们需要对象时，可以直接从spring容器（IOC）中去取。
 * 为什么将资源交给spring管理，交给spring管理有什么优势?
 * */
@ComponentScan("com.decade.config")
@SpringBootApplication
public class Application {//application.class

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}
